package uem.din.aeg.trab2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import uem.din.aeg.trab2.grafo.Grafo;
import uem.din.aeg.trab2.grafo.Vertice;

public class Interpretador {

    private File arquivo;
    private Scanner sc;

    public Interpretador(File arquivo) throws FileNotFoundException {
        this.arquivo = arquivo;
        sc = new Scanner(new FileInputStream(arquivo));
    }

    public Grafo interpreta() throws Exception {
        Grafo grafo = new Grafo();

        try {
            int qtdeVertices = sc.nextInt();
            int qtdeArestas = sc.nextInt();

            // ler os vértices
            for (int i = 0; i < qtdeVertices; i++) {
                int rotulo = sc.nextInt();
                int coordenadaX = sc.nextInt();
                int coordenadaY = sc.nextInt();

                Vertice vertice = new Vertice(coordenadaX, coordenadaY, Integer.toString(rotulo));

                grafo.adicionaVertice(vertice);
            }

            // ler as arestas
            for (int i = 0; i < qtdeArestas; i++) {
                int rotulo = sc.nextInt();
                int origem = sc.nextInt();
                int destino = sc.nextInt();

                Vertice vOrigem = grafo.obtemVertice(origem - 1);// o vértice "1" está na posição 0 da lista
                Vertice vDestino = grafo.obtemVertice(destino - 1);

                vOrigem.adicionaAdjacencia(vDestino);
                vDestino.adicionaAdjacencia(vOrigem);
            }
        } catch (Exception ex) {
            throw new Exception("Houve um erro na interpretação do arquivo.");
        } finally {
            sc.close();
        }

        return grafo;
    }
}
